package _220312;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author ShadowLim
 * @create 2022-03-12-9:22
 */

/* 思路： 等差数列项数： (an - a1) / d + 1  末项an 首项a1 公差d
 *       首末项已经确定 要得到最短等差数列 因为公差越大 项数越少 故等差数列就越短
 *        等差数列表示为 a1, a1 + d, a1 + 2 *d, a1 +3 * d, a1 + 4 * d .... a1 + n * d
 *        观察到每一项与第一项的差为公差的倍数 故求公差最大值即求数列给出的项数差值的最大公约数
 */
public class _等差数列 {

    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int n = scanner.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();
        }
        scanner.close();
        int d = 0;
        Arrays.sort(arr);
        for (int i = 1; i < n; i++) {
            d = gcd(d, arr[i] - arr[i - 1]);
        }
        int ans = d == 0 ? n : (arr[n - 1] - arr[0]) / d + 1;   //样例 ： 3  1 1 1
        System.out.println(ans);
    }

    public static int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
}
